#include "Timer.h"
#include "stm32f10x.h"
#include "stm32f10x_tim.h"
#include "misc.h"


void timer_init(void){

    // 因为 TIM3 是 通用时钟，其连接到了 APB1 上
    // 这里为其使能时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
    
    // 配置 TIM3 使用内部时钟
    TIM_InternalClockConfig(TIM3);
    
    // 1.配置预分频器
    TIM_PrescalerConfig(TIM3,7200-1,TIM_PSCReloadMode_Update);
    
    // 2.配置计数器的计数模式
    // 从 0 往上数，直到特定数字
    TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);
    
    // 3.设置自动重装寄存器的值
    TIM_SetAutoreload(TIM3,10000-1);
    
    // 配置时基单元
    // 这里一行相当于上面的1-3步骤所做的事情
    //TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
    //TIM_TimeBaseStructInit(&TIM_TimeBaseInitStruct);
/*    TIM_TimeBaseInit(TIM3,&(TIM_TimeBaseInitTypeDef){
        // 配置预分频
        .TIM_ClockDivision = TIM_CKD_DIV1,
        // 把 72MHz 的频率分为 72MHz/10000 = 7200Hz
        .TIM_Prescaler = 10000-1,
        // 配置自动重装寄存器
        // 当计数达到 7200 时，触发后续中断
        .TIM_Period = 7200-1,
        
        // 从 0 往上数，直到特定数字
        .TIM_CounterMode = TIM_CounterMode_Up,
        .TIM_RepetitionCounter = 0x0000,
    });
*/    
    
 
    TIM_OC2Init(TIM3,&(TIM_OCInitTypeDef){
        
        .TIM_OCMode = TIM_OCMode_Active,
        .TIM_OutputState = TIM_OutputState_Enable,
        .TIM_Pulse = 5000,
        
    });
    
    
    TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update );
    
    
    // 启动定时器
    TIM_Cmd(TIM3,ENABLE);
}


